/**
 * @filename:ModelConfig 2025-08-21
 * @project starhub-schema  V1.0
 */
package com.starhub.common.bean.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;

import lombok.Data;
import java.util.Date;

/**   
 * @Description:(模型设置实体类)
 * @version: V1.0
 * @author: luosw
 */
@Data
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class ModelConfig implements Serializable {

	private static final long serialVersionUID = 1755770271127L;
	
    @JsonSerialize(using = ToStringSerializer.class)
	@ApiModelProperty(name = "id" , value = "ID")
	private Long id;
    
	@ApiModelProperty(name = "deleteType" , value = "逻辑删除标识（0-未删除，1-已删除）")
	private Integer deleteType;
    
	@ApiModelProperty(name = "createTime" , value = "创建时间")
	private Date createTime;
    
	@ApiModelProperty(name = "updateTime" , value = "修改时间")
	private Date updateTime;
    
	@ApiModelProperty(name = "mark" , value = "唯一标识，用于区分配置连接")
	private String mark;

	@ApiModelProperty(name = "chatType" , value = "模型类型，例如：OpenAI、DeepSeek等")
	private String chatType;
    
	@ApiModelProperty(name = "apiUrl" , value = "大模型服务的API URL")
	private String apiUrl;
    
	@ApiModelProperty(name = "apiKey" , value = "大模型服务的API密钥")
	private String apiKey;
    
	@ApiModelProperty(name = "modelType" , value = "模型分类")
	private String modelType;
    
	@ApiModelProperty(name = "apiId" , value = "大模型服务的API ID")
	private String apiId;
    
	@ApiModelProperty(name = "apiSecret" , value = "大模型服务的API Secret")
	private String apiSecret;
    
	@ApiModelProperty(name = "name" , value = "模型名称")
	private String name;
    
	@ApiModelProperty(name = "modelName" , value = "")
	private String modelName;
    
	@ApiModelProperty(name = "identifier" , value = "模型标识（英文数字下划线）")
	private String identifier;
    
	@ApiModelProperty(name = "provider" , value = "模型提供商")
	private String provider;
    
	@ApiModelProperty(name = "modelId" , value = "模型ID（对应提供商的具体模型ID）")
	private String modelId;
    
	@ApiModelProperty(name = "description" , value = "模型描述")
	private String description;
    
	@ApiModelProperty(name = "authType" , value = "认证方式")
	private String authType;
    
    @JsonSerialize(using = ToStringSerializer.class)
	@ApiModelProperty(name = "maxTokens" , value = "最大token数")
	private Long maxTokens;
    
	@ApiModelProperty(name = "temperature" , value = "温度参数")
	private Double temperature;
    
	@ApiModelProperty(name = "topP" , value = "top_p参数")
	private Double topP;
    
	@ApiModelProperty(name = "frequencyPenalty" , value = "频率惩罚")
	private Double frequencyPenalty;
    
	@ApiModelProperty(name = "presencePenalty" , value = "存在惩罚")
	private Double presencePenalty;
    
	@ApiModelProperty(name = "isEnabled" , value = "是否启用")
	private String isEnabled;
    
	@ApiModelProperty(name = "version" , value = "模型版本")
	private String version;
    
	@ApiModelProperty(name = "lastUsedTime" , value = "最后使用时间")
	private String lastUsedTime;
    
    @JsonSerialize(using = ToStringSerializer.class)
	@ApiModelProperty(name = "usageCount" , value = "使用次数")
	private Integer usageCount;
    
    @JsonSerialize(using = ToStringSerializer.class)
	@ApiModelProperty(name = "rateLimit" , value = "速率限制")
	private Integer rateLimit;
    
    @JsonSerialize(using = ToStringSerializer.class)
	@ApiModelProperty(name = "timeout" , value = "超时时间（毫秒）")
	private Long timeout;
    
	@ApiModelProperty(name = "retryTimes" , value = "重试次数")
	private Integer retryTimes;
    
    @JsonSerialize(using = ToStringSerializer.class)
	@ApiModelProperty(name = "retryInterval" , value = "重试间隔（毫秒）")
	private Long retryInterval;
    
	@ApiModelProperty(name = "proxy" , value = "代理地址")
	private String proxy;
    
	@ApiModelProperty(name = "headers" , value = "自定义请求头")
	private String headers;
    
	@ApiModelProperty(name = "params" , value = "自定义参数")
	private String params;
    
	@ApiModelProperty(name = "status" , value = "模型状态")
	private String status;
    
	@ApiModelProperty(name = "dimension" , value = "向量维度")
	private Integer dimension;
    
	@ApiModelProperty(name = "isSystem" , value = "")
	private String isSystem;
    
	@ApiModelProperty(name = "connectionType" , value = "")
	private String connectionType;
    


}
